import pytest
import yaml


def load_test_data():
        f = open('../data/test_data2.yaml', 'r', encoding='utf-8')
        data = yaml.safe_load(f)
        return data


def test_user_array():
    # 加载YAML数据
    data = load_test_data()
    users = data['users']

    # 验证它是一个列表且有3个元素
    assert isinstance(users,list)
    assert len(users) == 3
    # 验证第一个用户的名称
    assert users[0]['name'] == "张三"

    # 使用参数化，为测试函数提供多组数据
    # 这是pytest最强大的功能之一
@pytest.mark.parametrize('user',load_test_data()['users'])
def test_each_user_with_parametrize(user):
    assert 'name' in user
    assert 'age' in user
    assert user['age'] > 18


@pytest.mark.parametrize('fruit',load_test_data()['fruits'])
def test_fruits(fruit):
    assert isinstance(fruit,str)
    assert len(fruit) > 0